package com.ruoyi.system.mapper;

import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
import com.ruoyi.system.domain.CreditServiceConfig;

/**
 * 服务配置Mapper接口
 * 
 * @author ruoyi
 * @date 2025-01-28
 */
public interface CreditServiceConfigMapper 
{
    /**
     * 查询服务配置
     * 
     * @param configId 服务配置主键
     * @return 服务配置
     */
    public CreditServiceConfig selectCreditServiceConfigByConfigId(Long configId);

    /**
     * 查询服务配置列表
     * 
     * @param creditServiceConfig 服务配置
     * @return 服务配置集合
     */
    public List<CreditServiceConfig> selectCreditServiceConfigList(CreditServiceConfig creditServiceConfig);

    /**
     * 新增服务配置
     * 
     * @param creditServiceConfig 服务配置
     * @return 结果
     */
    public int insertCreditServiceConfig(CreditServiceConfig creditServiceConfig);

    /**
     * 修改服务配置
     * 
     * @param creditServiceConfig 服务配置
     * @return 结果
     */
    public int updateCreditServiceConfig(CreditServiceConfig creditServiceConfig);

    /**
     * 删除服务配置
     * 
     * @param configId 服务配置主键
     * @return 结果
     */
    public int deleteCreditServiceConfigByConfigId(Long configId);

    /**
     * 批量删除服务配置
     * 
     * @param configIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCreditServiceConfigByConfigIds(Long[] configIds);

    /**
     * 根据服务代码查询服务配置
     * 
     * @param serviceCode 服务代码
     * @return 服务配置
     */
    public CreditServiceConfig selectCreditServiceConfigByServiceCode(String serviceCode);

    /**
     * 查询可用的服务配置列表
     * 
     * @return 服务配置集合
     */
    public List<CreditServiceConfig> selectAvailableServiceConfigs();

    /**
     * 获取服务使用统计
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 服务使用统计数据
     */
    List<Map<String, Object>> getServiceUsageStats(@Param("startDate") String startDate, @Param("endDate") String endDate);

    /**
     * 获取服务分布统计
     * @return 服务分布数据
     */
    List<Map<String, Object>> getServiceDistribution();

    /**
     * 获取服务收入统计
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 服务收入统计数据
     */
    List<Map<String, Object>> getServiceRevenueStats(@Param("startDate") String startDate, @Param("endDate") String endDate);

    /**
     * 获取服务增长率
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 服务增长率
     */
    Double getServiceGrowthRate(@Param("startDate") String startDate, @Param("endDate") String endDate);

    /**
     * 获取总服务使用次数
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 总服务使用次数
     */
    int getTotalServiceUsage(@Param("startDate") String startDate, @Param("endDate") String endDate);

    /**
     * 获取服务类型分布统计
     * @return 服务类型分布数据
     */
    List<Map<String, Object>> getServiceTypeDistribution();
} 